//Recruitment Data

rename codigo_identificacion Id
g agedays=trunc(interviewdate - birthdate)

*INDICADORES DE ALIMENTACION PARA MENORES DE 24 MESES

*Lactancia materna el dia de ayer (todos los ni�os). 
g amamantado1=0 if mamoayer1!=.
recode amamantado1 0=1 if  mamoayer1==1 
recode amamantado1 0=0 if mamoayer1==0|mamoayer1==99
label var amamantado1 "Amamantado"
label val amamantado1 sino

*Frecuencia minima de comida de 6 a 9 meses con dos o mas comidas al dia
g fmc6_8m_apre=0 if mamoayer1==1&agedays>=183&agedays<=274
recode fmc6_8m_apre 0=1 if numcomidas1!=.&numcomidas1>=2
recode fmc6_8m_apre 0=0 if numcomidas1!=.&numcomidas1<2
recode fmc6_8m_apre 0=0 if comeahora1==99
label var fmc6_8m_apre "Amamantados: Frecuencia minima de comida de 6 a 8 meses"
label define  fmc6_8m_apre  1">=2 comidas al dia" 0"< 2 comidas al dia"
label val   fmc6_8m_apre  fmc6_8m_apre  

*Frecuencia minima de comida de 9 a 24 meses con tres o mas comidas al dia
g fmc9_23m_apre=0 if mamoayer1==1&agedays>=274&agedays<=730
recode fmc9_23m_apre 0=1 if numcomidas1!=.&numcomidas1>=3
recode fmc9_23m_apre 0=0 if numcomidas1!=.&numcomidas1<3
recode fmc9_23m_apre 0=0 if comeahora==99
label var fmc9_23m_apre "Amamantados: Frecuencia minima de comida de 9 a 23 meses"
label define  fmc9_23m_apre  1">=3 comidas al dia" 0"< 3 comidas al dia"
label val   fmc9_23m_apre fmc9_23m_apre

*Frecuencia minima de comida de 6 a 24 meses 
g fmc6_23m_apre=0 if mamoayer1==1
recode fmc6_23m_apre 0=1 if numcomidas1!=.&numcomidas1>=2&agedays>=183&agedays<=274
recode fmc6_23m_apre 0=1 if numcomidas1!=.&numcomidas1>=3&agedays>=274&agedays<=730
recode fmc6_23m_apre 0=0 if numcomidas1!=.&numcomidas1< 2&agedays>=183&agedays<=274
recode fmc6_23m_apre 0=0 if numcomidas1!=.&numcomidas1< 3&agedays>=274&agedays<=730
recode fmc6_23m_apre 0=0 if comeahora1==99
label var fmc6_23m_apre "Amamantados: Frecuencia minima de comida de 6 a 23 meses"
label define  fmc6_23m_apre  1">= comidas al dia, adecuadas para la edad" 0"< comidas al dia adecuadas para la edad"
label val   fmc6_23m_apre fmc6_23m_apre

drop fmc6_8m_apre fmc9_23m_apre 

*Diversidad alimentaria minima
gen group_a1=0
recode group_a1 0=1 if pan==1|papas==1|atoles==1
recode group_a1 0=0 if !(pan==1|papas==1|atoles==1)
label var group_a1 "cereals"

gen group_b1=0
recode group_b1 0=1 if frijol==1
recode group_b1 0=0 if !(frijol==1)
label var group_b1 "legumes"

gen group_c1=0
recode group_c1 0=1 if queso==1|lechevaca==1|lecheformula==1
recode group_c1 0=0 if !(queso==1|lechevaca==1|lecheformula==1)
label var group_c1 "dairy"

gen group_d1=0
recode group_d1 0=1 if organos==1|carne==1|pescado==1
recode group_d1 0=0 if !(organos==1|carne==1|pescado==1)
label var group_d1 "meat"

gen group_e1=0
recode group_e1 0=1 if huevo==1
recode group_e1 0=0 if !(huevo==1)
label var group_e1 "egg"

gen group_f1=0
recode group_f1 0=1 if zanahoria==1|mango==1|hierba==1
recode group_f1 0=0 if !(zanahoria==1|mango==1|hierba==1)
label var group_f1 "VitaminA"

gen group_g1=0
recode group_g1 0=1 if fruta==1
recode group_g1 0=0 if !(fruta==1)
label var group_g1 "Otherfruitveg"

egen grupo_alim1=rowtotal(group_a1-group_g1)
label var grupo_alim1 "Numero grupos de alimentos pre"
drop group_a1 - group_g1

*Diversidad Alimentaria minima
*% Ni�os de 6 A 24 meses amamantados con consumo >= 4  grupos de alimentos al d�a
g dama1=0 if amamantado1==1
recode dama1 0=1 if grupo_alim1>=4
recode dama1 0=0 if !(grupo_alim1>=4)
label var dama1 "Amamantados: Diversidad alimentaria minima"
label define dama1 1">=4 grupos de alimentos" 0"< 4 grupos de alimentos"
label val dama1 dama1


*Dieta Minima Aceptable
*% ni�os de 6 a 24 meses de edad amamantados con dieta minima aceptable 
g dmaa1=0 if amamantado1==1
recode dmaa1 0=1 if   fmc6_23m_apre==1&dama1==1
recode dmaa1 0=0 if !(fmc6_23m_apre==1&dama1==1)
label var dmaa1 "Amamantados: Dieta minima aceptable"
label define dmaa1 1"fmca=si, dama=si" 0"fmca y/o dama=No"
label val dmaa1 dmaa1


*NO AMAMANTADOS
*Frecuencia de tomas de leche para ni�os no amamantados
*% de ni�os de 6 a 23 meses de edad NO AMAMANTADOS que reciben al menos 2 tomas de leche 
rename n_lechevaca nummilk_milkpre
rename n_lecheformula nummilk_formulapre

gen milktotalpre= nummilk_milkpre + nummilk_formulapre

g ftln1=0 if mamoayer1==0
recode ftln1 0=1 if milktotalpre>=2&agedays>=183&agedays<=730
recode ftln1 0=0 if milktotalpre<2&agedays>=183&agedays<=730
label var ftln1 "No amamantados: Frecuencia de tomas de leche"
label define ftln1 1">= 2 tomas de leche al dia" 0"< 2 tomas de leche al dia"
label val ftln1 ftln1


*Frecuencia minima de comidas (no amamantados)
*% Ni�os de 6 a 23 meses NO AMAMANTADOS, que reciben 4 o m�s comidas+tomas de leche el dia anterior 
g fmcn1=0 if mamoayer1==0
g fcom_leche1=0 if mamoayer1==0
replace fcom_leche1= numcomidas1+milktotalpre

recode fmcn1 0=1 if fcom_leche1>=4&agedays>=183&agedays<=730
recode fmcn1 0=0 if fcom_leche1<4&agedays>=183&agedays<=730
label var fmcn1 "No amamantados: Frecuencia minima de comidas"
label define fmcn1 1">=4 comidas en el dia" 0"<4 comidas en el dia"
label val fmcn1 fmcn1

drop milktotalpre ftln1 fcom_leche1


*Diversidad Alimentaria minima
*% Ni�os de 6 a 23 meses NO AMAMANTADOS con consumo >= 4  grupos de alimentos al d�a
g damn1=0 if mamoayer1==0
recode damn1 0=1 if grupo_alim1>=4
recode damn1 0=0 if grupo_alim1<4
label var damn1 "No amamantados: Diversidad alimentaria minima"
label define damn1 1">=4 grupos de alimentos" 0"< 4 grupos de alimentos"
label val damn1 damn1 


*Dieta Minima Aceptable
*% ni�os de 15 a 20 meses de edad NO AMAMANTADOS con dieta minima aceptable 
g dman1=0 if mamoayer1==0
recode dman1 0=1 if   fmcn1==1&damn1==1
recode dman1 0=0 if !(fmcn1==1&damn1==1)
label var dman1 "No amamantados: Dieta minima aceptable"
label define dman1 1"fmcn=1 y damn=1" 0"fmcn y/o damn=No"
label val dman1 dman1


*AMAMANTADOS Y NO AMAMANTADOS

*Frecuencia minima de comidas
*% Ni�os de 6 a 23 meses, que reciben el numero aceptable de comidas (amamantado=3 no amamantado=4) o m�s el dia anterior 
g fmc1=0 if mamoayer1!=.
recode fmc1 0=1 if fmc6_23m_apre==1|fmcn1==1
recode fmc1 0=0 if !(fmc6_23m_apre==1|fmcn1==1)
label var fmc1 "Frecuencia minima de comidas"
label define fmc1 1"Adecuada" 0"Inadecuada"
label val fmc1 fmc1


*Diversidad Alimentaria minima
*% Ni�os de 6 a 23 meses  con consumo >= 4  grupos de alimentos al d�a
g dam1=0 if mamoayer1!=.
recode dam1 0=1 if grupo_alim1>=4
recode dam1 0=0 if grupo_alim1<4
label var dam1 "Diversidad alimentaria minima"
label define dam1 1">=4 grupos de alimentos" 0"< 4 grupos de alimentos"
label val dam1 dam1


*Dieta Minima Aceptable
*% ni�os de 6 a 23 meses de edad con dieta minima aceptable 
g dma1=0 if mamoayer!=.
recode dma1 0=1 if   dman1==1|dmaa1==1
recode dma1 0=0 if !(dman1==1|dmaa1==1)
label var dma1 "Dieta minima aceptable"
label define dma1 1"fmc=1 y dam=1" 0"fmc y/o dam=No"
label val dma1 dma1



gen QPSq1=.
recode QPSq1 .=0 if membless13>=5
recode QPSq1 .=10 if membless13==4
recode QPSq1 .=12 if membless13==3
recode QPSq1 .=17 if membless13==2
recode QPSq1 .=23 if membless13==1
recode QPSq1 .=33 if membless13==0
label var QPSq1 "Numero miembros <13a"

gen QPSq2=.
recode QPSq2 .=0 if estudian7a13==0
recode QPSq2 .=2 if estudian7a13==99
recode QPSq2 .=6 if estudian7a13==1
label var QPSq2 "Estudian miembros 7 a 13a"

gen QPSq3=.
recode QPSq3 .=0 if momalfabeta==0
recode QPSq3 .=6 if momalfabeta==1
recode QPSq3 .=0 if momalfabeta==99
label var QPSq3 "Madre alfabeta espanol"

gen QPSq4=.
recode QPSq4 .=0 if hayjornalero==1
recode QPSq4 .=5 if hayjornalero==0
label var QPSq4 "Miembro jornalero,peon, empleado domestico"

gen QPSq5=.
recode QPSq5 .=0 if materialpiso==1
recode QPSq5 .=3 if materialpiso==2
recode QPSq5 .=9 if materialpiso==3
recode QPSq5 .=15 if materialpiso==4
label var QPSq5 "Material piso de la casa"

gen QPSq6=.
recode QPSq6 .=0 if refri==0
recode QPSq6 .=9 if refri==1
label var QPSq6 "Tiene refrigerador"

gen QPSq7=.
recode QPSq7 .=0 if estufa==0
recode QPSq7 .=8 if estufa==1
label var QPSq7 "Tiene estufa"

gen QPSq8=.
recode QPSq8 .=0 if piedramoler==1
recode QPSq8 .=3 if piedramoler==0
label var QPSq8 "Tiene piedra de moler"

gen QPSq9=.
recode QPSq9 .=0 if planchaelec==0
recode QPSq9 .=8 if planchaelec==1
label var QPSq9 "Tiene plancha electrica"

gen QPSq10=.
recode QPSq10 .=0 if ganado==0
recode QPSq10 .=3 if ganado==1
recode QPSq10 .=4 if ganado==99
label var QPSq10 "Si algun miembro es agricultor, tiene ganado?"

egen QPStotal=rowtotal(QPSq1-QPSq10)
label var QPStotal "Quick poverty Score"
drop QPSq1-QPSq10




*Algoritmo para calcular promedio de medidas y determinar casos problema

capture program drop ves
program define ves
syntax newvarname, Outlier(real)
tempvar ab ac bc dac dbc
qui {
	g `ab'=(abs(`varlist'a-`varlist'b)<=`outlier')
	g `ac'=(abs(`varlist'a-`varlist'c)<=`outlier')
	g `bc'=(abs(`varlist'c-`varlist'b)<=`outlier')
	g `varlist'=(`varlist'a+`varlist'b)/2 if `ab' // criterio 1
	replace `varlist'=(`varlist'a+`varlist'c)/2 if `ac'==1&`bc'==0&`varlist'==.
	replace `varlist'=(`varlist'b+`varlist'c)/2 if `bc'==1&`ac'==0&`varlist'==.
	
	g `dac'=abs(`varlist'a-`varlist'c)
	g `dbc'=abs(`varlist'b-`varlist'c)
	
		
	*replace `varlist'=(`varlist'a+`varlist'b+`varlist'c)/3 if `ac'==1&`bc'==1&`varlist'==.
	replace `varlist'=(`varlist'a+`varlist'c)/2 if `ac'==1&`bc'==1&`varlist'==.&`dac'<`dbc'
	replace `varlist'=(`varlist'b+`varlist'c)/2 if `ac'==1&`bc'==1&`varlist'==.&`dbc'<`dac'
		
	replace `varlist'=(`varlist'b+`varlist'c)/2 if `varlist'a==.&`bc'==1
	replace `varlist'=(`varlist'a+`varlist'c)/2 if `varlist'b==.&`ac'==1
		
}
end


/*reglas:
1. Si diferencia entre A y B es menor a la diferencia permitida, entonces promedio de las dos.
2. Si no se cumple con la diferencia entre A y B y hay una tercera medida, entonces:

a. La diferencia entre A y C est� en el rango establecido, pero no la diferencia entre B y C, entonces promedio de A y C.
b. La diferencia entre A y B est� en el rango establecido, pero no la diferencia entre A y C, entonces promedio de A y B.
c. La diferencia entre A y B est� en el rango establecido y la diferencia entre A y C entonces promedio de C, con medida mas cercana

3. Si no existe una primera medida pero s� B y C y la diferencia cae en lo establecido, entonces promedio B y C.
4. Si no existe una segunda medida pero s� A y C y la diferencia cae en lo establecido, entonces promedio A y C.
5. Casos que no cumplen son revisados para tomar una decisi�n.
*/

***********************************************************************************
capture program drop consoli1
program define consoli1
	syntax newvarname
	preserve
	rename `1'a `1'1 
	rename `1'b `1'2 
	reshape long `varlist', i(boleta) j(opcion)
	tab `varlist' Id
	restore
end


capture program drop consoli2
program define consoli2
	syntax newvarname
	preserve
	reshape long `varlist', i(boleta) j(opcion)
	tab `varlist' Id, col
	restore
end

capture program drop consoli3
program define consoli3
	syntax newvarname
	preserve
	reshape long `varlist', i(boleta) j(opcion)
	tab `varlist' Id, col row
	restore
end



capture program drop changedate 
program define changedate
 format `1'  %tcDDmonCCYY
 gen double `1'x = .
 format %td `1'x
 replace `1'x= dofc(`1')
 order `1'x, after(`1') 
 drop `1'
 ren `1'x `1'
end  


*PUNTAJE ZETA INDICADORES CRECIMIENTO
*GENERACION PUNTAJE Z

g edadm_antro=agedays/30.4375
label var edadm_antro "meses del ni�o sin redondear recl"

ves recrpeso, o(.205)
la var recrpeso "Peso del ni�o reclutamiento (kg)"
rename recrpeso weight

ves recrlong, o(.505)
la var recrlong "Longitud del ni�o reclutamiento(cms)"
rename recrlong height

g measure = "l"
label var measure "Longitud en centimetros recl"
g oedema="n"
label var oedema "Presencia de edema"
g sw=1
*rename gender sex
recode sex 0=2 
rename edadm_antro agemons
label var agemons "Meses de vida recl"
gen str6 ageunit="months"
lab var ageunit "Unidad de tiempo"
compress

*Aplicacion de la macro para menores de 5 a�os

adopath + "C:\Users\Datafolder\Recruitment\SBWK\RecrDatabase\igrowen\"
gen str60 reflib="C:\Users\Datafolder\Recruitment\SBWK\RecrDatabase\igrowen\"
lab var reflib "Directorio de tablas de referencia OMS"
gen str60 datalib="C:\Users\Datafolder\Recruitment\SBWK\RecrDatabase\igrowen\"
lab var datalib "Lugar de almacenamiento de resultados"
gen str30 datalab="Recrsurvey"
lab var datalab "Archivo de trabajo"
compress
igrowup_restricted reflib datalib datalab sex agemons ageunit weight height measure oedema sw
drop datalib datalab reflib sw measure oedema ageunit 

rename agemons agemons_pre
rename weight weight_pre
rename height height_pre
rename _agedays agedays_pre
rename _clenhei clenhei_pre
rename _cbmi cbmi_pre
rename _zwei WAZ_pre
rename _zlen HAZ_pre
rename _zbmi BMIZ_pre
rename _zwfl WLZ_pre
rename _fwfl fwfl_pre
rename _flen flen_pre
rename _fwei fwei_pre
rename _fbmi fbmi_pre

drop fwfl_pre flen_pre fwei_pre fbmi_pre clenhei_pre cbmi_pre weight_pre height_pre
drop agemons_pre agedays_pre
drop measure oedema sw ageunit reflib datalib datalab


// Exit Data

g exitagedays=trunc(fechasalida - birthdate)

*INDICADORES DE ALIMENTACION PARA MENORES DE 24 MESES

*Lactancia materna el dia de ayer (todos los ni�os). 
g exitamamantado=0 if mamarayer2!=.
recode exitamamantado 0=1 if  mamarayer2==1 
recode exitamamantado 0=0 if mamarayer2==0|mamarayer2==99
label var exitamamantado "Amamantado (post)"
label val exitamamantado sino

*AMAMANTADOS
*Frecuencia minima de comida de 6 a 9 meses con dos o mas comidas al dia (NO APLICA)
g exitfmc6_8m_a=0 if mamarayer2==1&exitagedays>=183&exitagedays<=274
recode exitfmc6_8m_a 0=1 if numero_comida2!=.&numero_comida2>=2
recode exitfmc6_8m_a 0=0 if numero_comida2!=.&numero_comida2<2
label var exitfmc6_8m_a "Amamantados: Frecuencia minima de comida de 6 a 8 meses (post)"
label define  exitfmc6_8m_a  1">=2 comidas al dia" 0"< 2 comidas al dia"
label val   exitfmc6_8m_a  exitfmc6_8m_a  


*Frecuencia minima de comida de 9 a 24 meses con tres o mas comidas al dia
g exitfmc9_amas_a=0 if mamarayer2==1&exitagedays>=274
recode exitfmc9_amas_a 0=1 if numero_comida2!=.&numero_comida2>=3
recode exitfmc9_amas_a 0=0 if numero_comida2!=.&numero_comida2<3
label var exitfmc9_amas_a "Amamantados: Frecuencia minima de comida de 9 a 23 meses (post)"
label define  exitfmc9_amas_a  1">=3 comidas al dia" 0"< 3 comidas al dia"
label val   exitfmc9_amas_a exitfmc9_amas_a

*Frecuencia minima de comida de 6 a 24 meses 
g exitfmc_a=0 if mamarayer2==1
recode exitfmc_a 0=1 if numero_comida2!=.&numero_comida2>=2&exitagedays>=183&exitagedays<=274
recode exitfmc_a 0=1 if numero_comida2!=.&numero_comida2>=3&exitagedays>=274
recode exitfmc_a 0=0 if numero_comida2!=.&numero_comida2< 2&exitagedays>=183&exitagedays<=274
recode exitfmc_a 0=0 if numero_comida2!=.&numero_comida2< 3&exitagedays>=274
label var exitfmc_a "Amamantados: Frecuencia minima de comida de 6 a 23 meses"
label define  exitfmc_a  1">= comidas al dia, adecuadas para la edad" 0"< comidas al dia adecuadas para la edad (post)"
label val   exitfmc_a exitfmc_a

*grupos de comidas

gen exitgroup_a=0
recode exitgroup_a 0=1 if pan2==1|papas2==1|atoles2==1
recode exitgroup_a 0=0 if !(pan2==1|papas2==1|atoles2==1)
label var exitgroup_a "cereals (post)"

gen exitgroup_b=0
recode exitgroup_b 0=1 if frijol2==1
recode exitgroup_b 0=0 if !(frijol2==1)
label var exitgroup_b "legumes (post)"

gen exitgroup_c=0
recode exitgroup_c 0=1 if queso2==1|lechevaca2==1|lecheformula2==1
recode exitgroup_c 0=0 if !(queso2==1|lechevaca2==1|lecheformula2==1)
label var exitgroup_c "dairy (post)"

gen exitgroup_d=0
recode exitgroup_d 0=1 if organos2==1|carne2==1|pescado2==1
recode exitgroup_d 0=0 if !(organos2==1|carne2==1|pescado2==1)
label var exitgroup_d "meat (post)"

gen exitgroup_e=0
recode exitgroup_e 0=1 if huevo2==1
recode exitgroup_e 0=0 if !(huevo2==1)
label var exitgroup_e "egg (post)"

gen exitgroup_f=0
recode exitgroup_f 0=1 if zanahoria2==1|mango2==1|hierba2==1
recode exitgroup_f 0=0 if !(zanahoria2==1|mango2==1|hierba2==1)
label var exitgroup_f "VitaminA (post)"

gen exitgroup_g=0
recode exitgroup_g 0=1 if fruta2==1
recode exitgroup_g 0=0 if !(fruta2==1)
label var exitgroup_g "Otherfruitveg (post)"

egen exitgrupo_alim=rowtotal(exitgroup_?)
label var exitgrupo_alim "Numero grupos de alimentos (post)"

*Diversidad Alimentaria minima
*% Ni�os de 6 A 24 meses amamantados con consumo >= 4  grupos de alimentos al d�a
g exitdama=0 if mamarayer2==1
recode exitdama 0=1 if exitgrupo_alim>=4
recode exitdama 0=0 if !(exitgrupo_alim>=4)
label var exitdama "Amamantados: Diversidad alimentaria minima (post)"
label define exitdama 1">=4 grupos de alimentos" 0"< 4 grupos de alimentos"
label val exitdama exitdama


*Dieta Minima Aceptable
*% ni�os de 6 a 24 meses de edad amamantados con dieta minima aceptable 
g exitdmaa=0 if mamarayer2==1
recode exitdmaa 0=1 if   exitfmc_a==1&exitdama==1
recode exitdmaa 0=0 if !(exitfmc_a==1&exitdama==1)
label var exitdmaa "Amamantados: Dieta minima aceptable (post)"
label define exitdmaa 1"fmca=si, dama=si" 0"fmca y/o dama=No"
label val exitdmaa exitdmaa


*NO AMAMANTADOS
*Frecuencia de tomas de leche para ni�os no amamantados
*% de ni�os de 6 a 23 meses de edad NO AMAMANTADOS que reciben al menos 2 tomas de leche 

gen exitmilktotal= n_lechevaca2 + n_lecheformula2

g exitftln=0 if mamarayer2==0
recode exitftln 0=1 if exitmilktotal>=2&exitagedays>=183
recode exitftln 0=0 if exitmilktotal<2&exitagedays>=183
label var exitftln "No amamantados: Frecuencia de tomas de leche (post)"
label define exitftln 1">= 2 tomas de leche al dia" 0"< 2 tomas de leche al dia"
label val exitftln exitftln

*Frecuencia minima de comidas (no amamantados)
*% Ni�os de 6 a 23 meses NO AMAMANTADOS, que reciben 4 o m�s comidas+tomas de leche el dia anterior 
g exitfmcn=0 if mamarayer2==0
g exitfcom_leche=0 if mamarayer2==0
replace exitfcom_leche= numero_comida2+exitmilktotal

recode exitfmcn 0=1 if exitfcom_leche>=4&exitagedays>=183
recode exitfmcn 0=0 if exitfcom_leche<4&exitagedays>=183
label var exitfmcn "No amamantados: Frecuencia minima de comidas (post)"
label define exitfmcn 1">=4 comidas en el dia" 0"<4 comidas en el dia"
label val exitfmcn exitfmcn
drop exitfcom_leche
drop exitmilktotal

*Diversidad Alimentaria minima
*% Ni�os de 6 a 23 meses NO AMAMANTADOS con consumo >= 4  grupos de alimentos al d�a
g exitdamn=0 if mamarayer2==0
recode exitdamn 0=1 if exitgrupo_alim>=4
recode exitdamn 0=0 if exitgrupo_alim<4
label var exitdamn "No amamantados: Diversidad alimentaria minima (post)"
label define exitdamn 1">=4 grupos de alimentos" 0"< 4 grupos de alimentos"
label val exitdamn exitdamn 


*Dieta Minima Aceptable
*% ni�os de 15 a 20 meses de edad NO AMAMANTADOS con dieta minima aceptable 
g exitdman=0 if mamarayer2==0
recode exitdman 0=1 if   exitfmcn==1&exitdamn==1
recode exitdman 0=0 if !(exitfmcn==1&exitdamn==1)
label var exitdman "No amamantados: Dieta minima aceptable (post)"
label define exitdman 1"fmcn=1 y damn=1" 0"fmcn y/o damn=No"
label val exitdman exitdman


*AMAMANTADOS Y NO AMAMANTADOS

*Frecuencia minima de comidas
*% Ni�os de 6 a 23 meses, que reciben el numero aceptable de comidas (amamantado=3 no amamantado=4) o m�s el dia anterior 
g exitfmc=0 if mamarayer2!=.
recode exitfmc 0=1 if exitfmc_a==1|exitfmcn==1
recode exitfmc 0=0 if !(exitfmc_a==1|exitfmcn==1)
label var exitfmc "Frecuencia minima de comidas (post)"
label define exitfmc 1"Adecuada" 0"Inadecuada"
label val exitfmc exitfmc


*Diversidad Alimentaria minima
*% Ni�os de 6 a 23 meses  con consumo >= 4  grupos de alimentos al d�a
g exitdam=0 if mamarayer2!=.
recode exitdam 0=1 if exitgrupo_alim>=4
recode exitdam 0=0 if exitgrupo_alim<4
label var exitdam "Diversidad alimentaria minima (post)"
label define exitdam 1">=4 grupos de alimentos" 0"< 4 grupos de alimentos"
label val exitdam exitdam


*Dieta Minima Aceptable
*% ni�os de 6 a 23 meses de edad con dieta minima aceptable 
g exitdma=0 if mamarayer2!=.
recode exitdma 0=1 if   exitdman==1|exitdmaa==1
recode exitdma 0=0 if !(exitdman==1|exitdmaa==1)
label var exitdma "Dieta minima aceptable (post)"
label define exitdma 1"fmc=1 y dam=1" 0"fmc y/o dam=No"
label val exitdma exitdma

drop nummilk_milkpre nummilk_formulapre n_lechevaca2 n_lecheformula2
drop fmc6_23m_apre lechevaca lecheformula atoles lechevaca2 lecheformula2 atoles2
drop dama1 dmaa1 fmcn1 damn1 dman1
drop exitfmc6_8m_a exitfmc9_amas_a
drop exitfmc_a 
drop exitgroup_a exitgroup_b exitgroup_c exitgroup_d exitgroup_e exitgroup_f exitgroup_g exitgrupo_alim
drop exitdama exitdmaa exitftln exitfmcn exitdamn exitdman 

*Algoritmo para calcular promedio de medidas y determinar casos problema

capture program drop ves
program define ves
syntax newvarname, Outlier(real)
tempvar ab ac bc dac dbc
qui {
	g `ab'=(abs(`varlist'a-`varlist'b)<=`outlier')
	g `ac'=(abs(`varlist'a-`varlist'c)<=`outlier')
	g `bc'=(abs(`varlist'c-`varlist'b)<=`outlier')
	g `varlist'=(`varlist'a+`varlist'b)/2 if `ab' // criterio 1
	replace `varlist'=(`varlist'a+`varlist'c)/2 if `ac'==1&`bc'==0&`varlist'==.
	replace `varlist'=(`varlist'b+`varlist'c)/2 if `bc'==1&`ac'==0&`varlist'==.
	
	g `dac'=abs(`varlist'a-`varlist'c)
	g `dbc'=abs(`varlist'b-`varlist'c)
	
		
	*replace `varlist'=(`varlist'a+`varlist'b+`varlist'c)/3 if `ac'==1&`bc'==1&`varlist'==.
	replace `varlist'=(`varlist'a+`varlist'c)/2 if `ac'==1&`bc'==1&`varlist'==.&`dac'<`dbc'
	replace `varlist'=(`varlist'b+`varlist'c)/2 if `ac'==1&`bc'==1&`varlist'==.&`dbc'<`dac'
		
	replace `varlist'=(`varlist'b+`varlist'c)/2 if `varlist'a==.&`bc'==1
	replace `varlist'=(`varlist'a+`varlist'c)/2 if `varlist'b==.&`ac'==1
		
}
end


/*reglas:
1. Si diferencia entre A y B es menor a la diferencia permitida, entonces promedio de las dos.
2. Si no se cumple con la diferencia entre A y B y hay una tercera medida, entonces:

a. La diferencia entre A y C est� en el rango establecido, pero no la diferencia entre B y C, entonces promedio de A y C.
b. La diferencia entre A y B est� en el rango establecido, pero no la diferencia entre A y C, entonces promedio de A y B.
c. La diferencia entre A y B est� en el rango establecido y la diferencia entre A y C entonces promedio de C, con medida mas cercana

3. Si no existe una primera medida pero s� B y C y la diferencia cae en lo establecido, entonces promedio B y C.
4. Si no existe una segunda medida pero s� A y C y la diferencia cae en lo establecido, entonces promedio A y C.
5. Casos que no cumplen son revisados para tomar una decisi�n.
*/

***********************************************************************************
capture program drop consoli1
program define consoli1
	syntax newvarname
	preserve
	rename `1'a `1'1 
	rename `1'b `1'2 
	reshape long `varlist', i(boleta) j(opcion)
	tab `varlist' exitid
	restore
end


capture program drop consoli2
program define consoli2
	syntax newvarname
	preserve
	reshape long `varlist', i(boleta) j(opcion)
	tab `varlist' exitid, col
	restore
end

capture program drop consoli3
program define consoli3
	syntax newvarname
	preserve
	reshape long `varlist', i(boleta) j(opcion)
	tab `varlist' exitid, col row
	restore
end



capture program drop changedate 
program define changedate
 format `1'  %tcDDmonCCYY
 gen double `1'x = .
 format %td `1'x
 replace `1'x= dofc(`1')
 order `1'x, after(`1') 
 drop `1'
 ren `1'x `1'
end  


*PUNTAJE ZETA INDICADORES CRECIMIENTO
*GENERACION PUNTAJE Z

g exitedadm_antro=exitagedays/30.4375
label var exitedadm_antro "meses del ni�o sin redondear (post)"
drop exitagedays

ves exitpeso, o(.205)
la var exitpeso "Peso del ni�o salida(kg)"
rename exitpeso weight

ves exitlong, o(.505)
la var exitlong "Longitud del ni�o salida(cms)"
rename exitlong height

g measure = "l"
label var measure "Longitud en centimetros salida"
g oedema="n"
label var oedema "Presencia de edema salida"
g sw=1
*rename sexo3 gender
rename exitedadm_antro agemons
label var agemons "Meses de vida salida"
gen str6 ageunit="months"
lab var ageunit "Unidad de tiempo"
compress


*Aplicacion de la macro para menores de 5 a�os

adopath + "C:\Users\Datafolder\Exit\SBWK\ExitDatabase\igrowex"
gen str60 reflib="C:\Users\Datafolder\Exit\SBWK\ExitDatabase\igrowex"
lab var reflib "Directorio de tablas de referencia OMS"
gen str60 datalib="C:\Users\Datafolder\Exit\SBWK\ExitDatabase\igrowex"
lab var datalib "Lugar de almacenamiento de resultados"
gen str30 datalab="Exitsurvey"
lab var datalab "Exitsurvey"
compress
igrowup_restricted reflib datalib datalab sex agemons ageunit weight height measure oedema sw

drop datalib datalab reflib sw measure oedema ageunit 

rename agemons agemons_post
rename weight weight_post
rename height height_post
rename _agedays agedays_post
rename _clenhei clenhei_post
rename _cbmi cbmi_post
rename _zwei WAZ_post
rename _zlen HAZ_post
rename _zbmi BMIZ_post
rename _zwfl WLZ_post
rename _fwfl fwfl_post
rename _flen flen_post
rename _fwei fwei_post
rename _fbmi fbmi_post

drop fwfl_post flen_post fwei_post fbmi_post clenhei_post cbmi_post weight_post height_post
drop agemons_post agedays_post
drop agedays
drop membless13-ganado
drop pan-condimentos
drop grupo_alim1
drop pan2-condimentos2
drop BMIZ_pre BMIZ_post
drop amamantado1 exitamamantado







 
